// import com.alibaba.druid.DbType;
// import com.alibaba.druid.sql.ast.*;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor*;

// import java.util.ArrayList;
// import java.util.std::list;
#pragma once
#include <string>
#include <list>
#include "../SQLStatementImpl.h"
#include "../SQLReplaceable.h"
#include "SQLCreateStatement.h"

class SQLExpr;
class SQLName;
class SQLASTVisitor;
class SQLDDLStatement;

class SQLDropRoleStatement 
:virtual public SQLStatementImpl,
 virtual public SQLCreateStatement, 
 virtual public SQLReplaceable
{
public:
  SQLName_ptr name;
  BOOL_ptr ifNotExists;

  SQLDropRoleStatement();

  SQLDropRoleStatement(DbType_ptr   dbType);
  SHAREDOBJECT(SQLDropRoleStatement);

  void accept0(SQLASTVisitor_ptr visitor);

  SQLObject_list_ptr getChildren();

  SQLName_ptr getName();

  void setName(SQLName_ptr name);

  BOOL_ptr isIfNotExists();

  void setIfNotExists(BOOL_ptr ifNotExists);

  BOOL_ptr replace(SQLExpr_ptr expr, SQLExpr_ptr target);

  SQLDDLStatement::DDLObjectType getDDLObjectType();
};
